又到了一年一度的DP欢乐时刻~ 虽然我是一只蒟蒻~ 爆蛋味让我变得更香~ 咳咳
首先是入门题:windy数 https://www.luogu.org/problemnew/show/P2657
这我就不会做了啊喂!!! 仔细回味yzc大佬讲的,恍然大悟之打开题解
原来真是模板
先让我们来看看数位DP
数位dp一般应用于:
求出在给定区间[A,B]内,符合条件P(i)的数i的个数.
条件P(i)一般与数的大小无关,而与 数的组成 有关.
一般来说讯问[A,B]区间内满足要求的数的个数,拆成[1,A-1],[1,B]来做
模板~:
1 | // pos = 当前处理的位置(一般从高位到低位) |
然后回到这道题:要求A,B间相邻每位绝对值大于2的数的个数
定义状态,$f[i][j]$ 表示i位的数最高位为j的方案数,根据上文所述,首先解决1~A-1范围内的数
先十进制分解(A-1),所有位数低于他的显然被包括,所有位数相同且最高位小于他的显然被包括
那么剩下的就一位一位枚举即可,最后1~B同理可得
$Code:$
1 |
|
撒fafa~